package com.ciwong.epaper.widget;


import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.ciwong.epaper.R;

import java.util.ArrayList;
import java.util.List;

public class MyTopParousel {

    // 封装点对应view对象的集合
    private List<View> viewList = new ArrayList<View>();

    private List<String> imageUrlList;

    private Context context;

    private LinearLayout dots_ll;

    private LinearLayout ll_viewPager;

    public MyTopParouselViewPager rollViewPager;

    private TextView tv_title_item;

    public MyTopParousel(Context context, List<String> imageUrlList) {
        this.context = context;
        this.imageUrlList = imageUrlList;
        rollViewPager = new MyTopParouselViewPager(context);
    }

    public void setImageUrlList(List<String> imageUrlList) {
        this.imageUrlList = imageUrlList;
    }

    /**
     * 返回轮播图样式view
     *
     * @param isDot true:原点切换页面； false：数字切换页面
     * @return
     */
    public View initView(boolean isDot) {

        View view = View.inflate(context, R.layout.fragment_hot_head, null);
        ll_viewPager = (LinearLayout) view.findViewById(R.id.ll_viewPager);
        tv_title_item = (TextView) view.findViewById(R.id.tv_title_item);
        dots_ll = (LinearLayout) view.findViewById(R.id.dots_ll);
        // if (imageUrlList == null || imageUrlList.size() < 2) {
        // return null;
        // }
        processData(isDot);
        return view;
    }

    /**
     * @param isDot  true:原点切换页面； false：数字切换页面
     * @param height 轮播的高度
     * @return 返回轮播图样式view
     */
    public View initView(boolean isDot, int height) {

        View view = initView(isDot);
        setViewPagerHeight(height);
        return view;
    }

    /**
     * 设置轮播高度()
     *
     * @param height
     */
    public void setViewPagerHeight(int height) {
        if (ll_viewPager != null && height > 0) {
            RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT, height);
            ll_viewPager.setLayoutParams(lp);
        }
    }

    public void processData(boolean isDot) {
        if (imageUrlList.size() > 0) {
            // 轮播图逻辑
            // 初始化，第一个点为选中状态
            if (isDot) {
                // ========有点===。。。========
                initDot();
                tv_title_item.setVisibility(View.GONE);
            } else {
                // ========没点=== 1/3 =========
                tv_title_item.setVisibility(View.VISIBLE);
            }
            if (!isDot) {
                rollViewPager.setTitle(tv_title_item);
            }
            // int height = DensityUtils.dip2px(context, 140);
            // rollViewPager.setHeight(height);
            // 轮播图文字对应的集合，当前显示文字的控件
            // rollViewPager.initTitle(titleList,top_news_title);
            // 将轮播图需要用到的图片传递过去
            rollViewPager.setImgList(imageUrlList);
            rollViewPager.setPoints(viewList);
            // 构建轮播图片对应的数据适配器，轮播图片滚动起来
            rollViewPager.startRoll();
            // 将轮播图对应的自定义的viewpager添加到其所在线性布局内
            ll_viewPager.removeAllViews();
            ll_viewPager.addView(rollViewPager);
        }

    }

    /**
     * 初始化，第一个点为选中状态
     */
    private void initDot() {
        // 去掉点所在线性布局内部所有子view
        dots_ll.removeAllViews();
        // 记录当前点，那个是红的，那个是白的
        viewList.clear();
        if (imageUrlList.size() == 1) {
            return;
        }
        for (int i = 0; i < imageUrlList.size(); i++) {
            View view = new View(context);
            if (i == 0) {
                view.setBackgroundResource(R.mipmap.dot_focus);
            } else {
                view.setBackgroundResource(R.mipmap.dot_normal);
            }

            // 设置view对象宽高的操作
            int width = 16; // PhoneUtils.dip2px(context, 8);
            // 设置view对象间的间距
            int margin = 6; // PhoneUtils.dip2px(context, 3);
            // 设置view对象宽高的操作
            LayoutParams layoutParams = new LayoutParams(width, width);
            // 设置view对象间的间距
            layoutParams.setMargins(margin, 0, margin, 0);
            // 将当前规则作用在view上
            dots_ll.addView(view, layoutParams);
            viewList.add(view);
        }
    }

    /**
     * 设置点击
     *
     * @param
     */
    public void setClick(MyTopParouselViewPager.OnTopParouselListener listener) {
        if (rollViewPager != null) {
            rollViewPager.setOnClickListener(listener);
        }
    }

    /**
     * 滚动
     */
    public void startRoll() {
        if (rollViewPager != null) {
            rollViewPager.roll();
        }
    }

    /**
     * 清除滚动
     */
    public void clearRoll() {
        if (rollViewPager != null) {
            rollViewPager.clearRoll();
        }
    }

    /**
     * 获取当前轮播的位置
     *
     * @return
     */
    public int getCurrentPosition() {

        if (rollViewPager != null) {

            return rollViewPager.getCurrentPosition();
        }
        return -1;
    }

    public boolean getVisibility() {
        if (rollViewPager != null) {
            return rollViewPager.isVISIBLE();
        }
        return false;
    }

    public boolean isShown() {

        if (rollViewPager != null) {
            return rollViewPager.isShown();
        }
        return false;
    }
}

